public class Main {
    public static void main(String[] args) {
//
        StringBuilder sb1=new StringBuilder("hello");
        StringBuilder sb2=sb1;
        //追加，也就是尾插，字符、字符串、整型数字
        sb1.append(' ');
        sb1.append("world");
        sb1.append(123);
        System.out.println(sb1);
        System.out.println(sb1==sb2);
        System.out.println(sb1.length());
        System.out.println(sb1.charAt(0));
        System.out.println(sb1.capacity());


        //String类被final修饰，表明该类不能被继承，
        //value被final修饰，表明本身的值不能够被改变
        //也就是不能够去引用其他字符数组，但是其引用空间中的内容可以修改
        //所有涉及到可能修改字符串内容的操作都是操作都是创建一个新对象，改变的是新对象
        //网络上有人说，字符串不可变是因为其内部保存字符的数组被final修饰了，因此不能够改变
        //这个说法是错误的，不是因为String类自身，或者其内部value被final修饰而不能修改
        //final修饰类表明该类不想被继承，final修饰引用类型表明该引用白能量不能引用其他对象，但是其引用对象中的内容是可以修改的
        //

        //为什么String要设计为不可变的？？
        //（也就是不可变对象的好处是什么？
        //1.方便实现字符串对象池，如果String可变，那么对象池就需要考虑时候拷贝的问题了，
        //2.不可变对象是线程安全的
        //3.不可变对象是更方便缓存hashcode，作为key时候可更高效的保存到hashmap中
        //如果想要修改字符串中的内容应该要怎么去操作呢？？

        //字符串修改，尽量避免直接对String类型对象进行修改，因为String类是不可以修改的，所有的修改都会创建新对象，效果非常低下
        //
        //效率低，使用StringBuilder 和StringBuffer
        //
        //这两个大类部分功能是i相同的，

     //   System .out.println("Hello world!");
    }
}